package ep2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import ep2.GerenciadorThreads.Escritor;
import ep2.GerenciadorThreads.Leitor;

public class BD {

	private ArrayList<String> bd = new ArrayList<String>();
	int mutex;
	int leitores;
	int escritores;

	public BD(String caminho) {
		this.carregaBD(caminho);
		this.mutex = 1;
		this.leitores = 0;
		this.escritores = 0;
	}

	void carregaBD(String caminho) {

		try {
			File arquivoBD = new File(caminho);
			FileReader leitor = new FileReader(arquivoBD);
			BufferedReader buffer = new BufferedReader(leitor);

			String linha = null;
			int i = 0;

			while ((linha = buffer.readLine()) != null) {
				this.bd.add(i, linha);
				i++;
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	int tamanhoBD() {
		return this.bd.size();
	}

	synchronized void up(int i) {
		i++;
	}

	synchronized void down(int i) {
		i--;
	}

	void le(Leitor leitor, int posicao) throws Exception {
		System.out.println("lendo posicao " + posicao);
		bd.get(posicao);
	}

	void escreve(Escritor escritor, int posicao) throws Exception {
		System.out.println("Banco bloqueado " + escritor.toString());
		bd.set(posicao, "MODIFICADO");
		System.out.println("Banco liberado " + escritor.toString());
	}
}
